/* 
 * File:   AppCliente.cpp
 * Author: nahuel
 * 
 * Created on November 17, 2012, 7:59 PM
 */

#include "AppCliente.h"

// TEST
#include <gtkmm-3.0/gtkmm/main.h>


using namespace TP::Comunicacion;
using namespace std;

AppCliente::AppCliente() {
	_conexionCliente = NULL;	
//	_threadVentanaJuego = NULL;
//	_ventanaJuego = NULL;
	_ventanaMenuPrincipal = NULL;
	_log = new std::ofstream("./logs/errlog");
}

AppCliente::~AppCliente() {
	if (_conexionCliente) delete _conexionCliente;	
}

void AppCliente::ConectarAServidor(const std::string& ip, const std::string puerto) {	
	if (!(_conexionCliente)) _conexionCliente = new Cliente(ip, puerto, *_log);
	
	try {
		_conexionCliente->Iniciar();	
	} catch (Excepcion& pEx) {
		(*_log) << pEx.what() << endl;
		throw;
	}	
}

void AppCliente::DesconectarDeServidor() {
	if (_conexionCliente) {
		try {
			_conexionCliente->Finalizar();
			delete _conexionCliente;
			_conexionCliente = NULL;
		} catch (Excepcion& pEx) {
			(*_log) << pEx.what() << endl;
		}		
	}
}

void AppCliente::Iniciar(Glib::RefPtr<Gtk::Application>* app) {
	_ventanaMenuPrincipal = new VentanaMenuPrincipal(_conexionCliente);
	_ventanaMenuPrincipal->Show();
	
	(*app)->run(*_ventanaMenuPrincipal);

	
	
	
//	_threadVentanaJuego = new ThreadInterfazGrafica(_ventanaMenuPrincipal, app);
//	_threadVentanaJuego->Iniciar();
}

void AppCliente::Finalizar() {
	_threadVentanaJuego->Finalizar();
}